package pe.edu.upc.dsd.mercadolibre;

import java.util.Collection;
import javax.jws.WebService;

import org.springframework.jms.core.JmsTemplate;

import com.google.gson.Gson;

import pe.edu.upc.dsd.mercadolibre.mq.CorrelationIdMessageSender;

@WebService
public class BuscarArticuloImpl implements BuscarArticulo {

	private CorrelationIdMessageSender sender;

	public void setSender(CorrelationIdMessageSender sender) {
		this.sender = sender;
	}

	private JmsTemplate jmsTemplate;

	public void setJmsTemplate(JmsTemplate jmsTemplate) {
		this.jmsTemplate = jmsTemplate;
	}

	private Gson gson= new Gson();
	public Collection<Articulo> ListarArticulos() throws DAOExcepcion {
		ArticuloDAO dao = new ArticuloDAO();
		return dao.ListaArticulosDB();
	}

	public Collection<Articulo> BuscarArticulos(String TxtB)
			throws DAOExcepcion {
		ArticuloDAO dao = new ArticuloDAO();
		return dao.BuscarArticulosDB(TxtB);
	}

	public Articulo ObtenerArticulo(int id) throws DAOExcepcion {
		ArticuloDAO dao = new ArticuloDAO();
		return dao.ObtenerArticuloDB(id);
	}

	@Override
	public Collection<Articulo> ObtenerMisArticulos(int idUser)
			throws DAOExcepcion {
		ArticuloDAO dao = new ArticuloDAO();
		return dao.ObtenerMisArticulos(idUser);
	}

	@Override
	public void GuardarArticulo(Articulo vo) throws DAOExcepcion {
		ArticuloDAO dao = new ArticuloDAO();
		dao.GuardarArticulo(vo);

	}

	@Override
	public void ActualizarArticulo(Articulo vo) throws DAOExcepcion {
		ArticuloDAO dao = new ArticuloDAO();
		dao.ActualizarArticulo(vo);
	}

	@Override
	public void EliminarArticulo(Articulo vo) throws DAOExcepcion {
		ArticuloDAO dao = new ArticuloDAO();
		dao.EliminarArticulo(vo);
	}

	@Override
	public String ComprarArticulo(Articulo vo) throws DAOExcepcion {
		// public String ComprarArticulo(int id){
		// TODO Auto-generated method stub
		ArticuloDAO dao = new ArticuloDAO();
		Articulo articulo = dao.ObtenerArticuloDB(vo.getId());
		articulo.setComprador(vo.getComprador());
		articulo.setStock(vo.getStock());

		String respuesta = sender.send(gson.toJson(articulo));
		// jmsTemplate.convertAndSend("x","mensaje");//sender.send("");
		return respuesta + articulo.getNombre();
		// return vo.getStock() + " unidades de " + articulo.getNombre()
		// + "fueron comprados";

	}

}
